from rest_framework.pagination import PageNumberPagination as DrfPageNumberPagination



"""分页组件的使用
1） 重写分页类 - 自定义同名类继承drf的分页类
2） 完成必要的配置
3） 将重写的分页类配置给群查需求的视图类

"""
class PageNumberPagination(DrfPageNumberPagination):
    # 默认一页显示的条数
    page_size = 10
    # url中携带页码的key
    page_query_param = 'page'
    # url中用户携带自定义一页条数的key
    page_size_query_param = 'page_size'
    # 用户最大可自定义一页的条数
    max_page_size = 10


from rest_framework.pagination import LimitOffsetPagination as DrfLimitOffsetPagination
class LimitOffsetPagination(DrfLimitOffsetPagination):
    # 默认一页显示的条数
    default_limit = 2
    # # url中用户携带自定义一页条数的key
    # limit_query_param = 'limit'
    # # url中用户携带自定义偏移条数的key
    # offset_query_param = 'offset'
    # # 用户最大可自定义一页的条数
    # max_limit = 2


from rest_framework.pagination import CursorPagination as DrfCursorPagination
class CursorPagination(DrfCursorPagination):
    # 默认一页显示的条数
    page_size = 2
    # url中携带页码的key（编码后的结果）
    cursor_query_param = 'cursor'
    # url中用户携带自定义一页条数的key
    page_size_query_param = 'page_size'
    # 用户最大可自定义一页的条数
    max_page_size = 3
    # 游标分页器的特殊点：
    # 1）如果视图类没有配 排序过滤组件filter_backends = [OrderingFilter]，采用 ordering 设置的作为默认排序规则
    # 2）如果视图类配了 排序过滤组件filter_backends = [OrderingFilter]，url请求必须带上ordering排序规则，因为默认排序规则失效
    # 注：因为游标分页是基于排序后结果上的分页
    ordering = '-price'
